Skip to content

JIT 全称是 Just-In-Time,即在程序运行时(而不是预先)动态编译代码。起初,我曾误以为 JIT 就是热更新 HMR,但实际上两者并不相同。

1. JIT 模式的概念

JIT 的核心思想是 按需编译和生成资源,其特点如下:

  1. 按需生成:只为实际使用的类名生成样式,避免生成无用的样式规则。
  2. 性能优化:生成的 CSS 文件更小,加载更快。
  3. 动态生成:可以根据动态类名或自定义规则实时生成 CSS 规则。

2. JIT 模式与热更新的区别

热更新(HMR)是一种开发时的技术,允许在不刷新整个页面的情况下,实时替换、添加或移除模块(如组件、样式等),从而保持应用的状态。两者虽然具有实时性和动态性,但本质不同。

热更新(HMR)的核心特点

  1. 状态保留:在修改代码的同时保留应用的当前状态,例如表单中的输入数据或选中的复选框。
  2. 提高开发效率:开发者可以实时看到代码变更的效果,而无需重启应用。

JIT 与 HMR 的区别

  1. 用途不同
    • HMR 用于开发中保留状态,提高效率和用户体验。
    • JIT 用于按需生成和优化资源。
  2. 实现不同
    • HMR 优化开发体验,避免中断开发。
    • JIT 减少生成资源体积,确保只加载必要资源。
  3. 适用场景不同
    • HMR 适用于模块化框架(如 React、Vue、Angular)。
    • JIT 应用于资源生成和构建阶段。

3. Tailwind CSS 中的 JIT 模式

虽然 JIT 并非 Tailwind CSS 独有,但 Tailwind 将其发扬光大,与传统的 CSS 构建方式相比,JIT 模式具有以下特别之处:

1. 按需生成 CSS

传统编译会生成所有样式(无论是否使用),而 JIT 只生成实际用到的样式。这不仅减少了 CSS 文件大小,还显著提高了加载和渲染速度。

2. 动态生成 CSS 类

JIT 不仅编译已写好的类名,还可以根据动态类名即时生成样式。例如:

html
<div class="text-[rgb(255,0,0)] bg-[url('/image.png')]">Hello</div>

Tailwind JIT 会动态解析并生成对应的 CSS 规则,而不需要预先配置。

3. 更快的热更新

JIT 仅在新增或修改类名时重新生成 CSS,因此构建速度更快,热更新响应也更迅速。

4. 极简配置

无需手动列出需要保留的类名,Tailwind 会自动识别代码中用到的类,减少了配置的复杂性。

5. 支持自定义功能

JIT 模式允许开发者动态添加自定义颜色、间距、字体等,进一步增强了灵活性和扩展能力。

4. 总结:JIT 模式的特别之处

Tailwind 的 JIT 模式在现代开发中具备以下优势:

按需生成样式,减少冗余,优化资源大小。

动态类名支持,适配灵活多变的需求。

高效的构建和热更新,显著提升开发效率。

简化配置与自定义,为开发者提供更多自由。

相比传统的静态编译模式,JIT 模式显然更适合动态变化频繁、对性能要求高的项目,是现代前端开发环境中的一大技术进步。

上次更新于: